package SingleCase;

public class SingleCase {                                           //happens-before具有传递规则
        private volatile static SingleCase uniqueSingleton;      //。使用了volatile关键字后，重排序被禁止，所有的写（write）操作都将发生在读（read）操作之前。

        private SingleCase() {
        }

        public SingleCase getInstance() {
            if (null == uniqueSingleton) {  //如果多线程同时 通过了第一层校验     上锁  创建实例
                synchronized (SingleCase.class) {
                    if (null == uniqueSingleton) {
                        uniqueSingleton = new SingleCase();
                    }
                }
            }
            return uniqueSingleton;
        }
}
